/**
 * 1、XMLHttpRequest对象
 *  ActiveXObject
 */

var xmlhttp = null;
if (window.XMLHttpRequest) {
    //如果是非IE浏览器  使用XMLHttpRequest对象
    //构建httpRequest对象
    xmlhttp = new XMLHttpRequest();
} else {
    //如果是IE浏览器  使用 ActiveXObject对象
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
console.log("程序开始执行");
//open(type,url,async) 建立一个到服务器端的连接（并不是像字面上那样表示打开连接）
//type : 请求方式 GET或POST
//url : 请求地址
//async ： 是否异步请求
// xmlhttp.open("GET", "sample/test.php?name=张&age=12", true);
xmlhttp.open("POST", "sample/test.php", true);
xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");

//send(data)发送一个请求到指定的服务器 如果发送的是GET请求，传null
//data:要发送的数据
xmlhttp.send("name=张&age=12");

/**
 * 同步请求模式下：只需要在send之后，直接使用xmlhttp.responseText即可
 * 异步请求模式下：需要监听onreadystatechange事件
 * 该事件会返回服务器状态码及HTTP状态码
 * xmlhttp.readyState 服务器状态码  返回 0 1 2 3 4 五种
 * 但并不是所有浏览器或情况下都会顺序返回这五种
 * 程序员只需要关心 4 的状态码即可，4 表示服务器已经接受并处理请求
 *
 * 当服务器状态码为4时，即可判断HTTP状态码，常见的有：
 * 200 一切顺利  304 缓存数据，可以直接使用
 * 404 页面未找到 500及以上 服务器内部错误
 * 程序员除关注200及304外，其余的错误码可以返回给客户端，告知错误问题
 *
 *
 */
xmlhttp.onreadystatechange = function() {
    console.log(xmlhttp.readyState);
    if (xmlhttp.readyState == 4) {
        if (xmlhttp.status == 200) {
            var str = xmlhttp.responseText;
            console.log(str);
        };
    }
}
    //responseText 服务器端返回的文本消息 它是HttpRuequest的一个属性
var str = xmlhttp.responseText;
console.log(str);
console.log("程序结束执行");
